package com.cskaoyan.javase.oop1._4compare;

/**
 * 局部变量和成员变量的比较，我们从以下五个方面去比较：
 *
 * 1.在类中定义的位置不同
 *      成员变量: 定义在成员位置,指的是类体中,局部位置以外
 *      局部变量: 方法中或者是一个作用域内部
 * 2.在内存中的位置不同
 *      成员变量: 堆上的对象中
 *      局部变量: 方法的栈帧中
 * 3.生命周期不同
 *      成员变量: 和对象"同生共死",但是实际上一旦引用被销毁,对象就成为垃圾,对象当中的成员变量也就没有意义了
 *      局部变量: 和方法调用"同生共死"
 * 4.有无默认初始化不同
 *      成员变量: 是有默认初始化的,是具有默认值的
 *      局部变量: 没有默认初始化,没有默认值,必须手动初始化,必须手动赋值
 * 5.作用范围
 *      成员变量: 在整个类的成员方法中,都是可以任意访问的,根据这一点,所以有些人会把成员变量,称之为"全局变量"
 *              但是: 在类中的static修饰的方法中,是不能访问成员变量的.
 *
 *              除此之外,类中的成员方法可以互相调用,static方法也可以互相调用.
 *
 *      局部变量: 被大括号的作用域限制死了作用域
 *
 * @since 15:20
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class A {
    int var;

    public void test() {
        System.out.println(var);
    }
    public void test2() {
        test();
        System.out.println(var);
    }

    public static void testStatic() {
        // System.out.println(var);
        // test();
    }
}
